﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ACC.Data.Entities.Mes
{
    /// <summary>
    /// IOT报文实体类
    /// </summary>
    public class IOTDataInfo
    {
        /// <summary>
        /// 例:"XXX1505372015339"  XXX代表厂家名拼音首字母+随机数
        /// </summary>
        public string msgid;
        /// <summary>
        /// 例:"XNYDP2MQMJC1" 由宇通分配设备编码
        /// </summary>
        public string devid;
        /// <summary>
        /// 例:"20170914192136234" 数据产生时间
        /// </summary>
        public string time;
        /// <summary>
        /// 例:"20170914192136234"  报文发送时间
        /// </summary>
        public string ts;
        /// <summary>
        /// ext
        /// </summary>
        public Ext ext;
        /// <summary>
        /// context（预留）
        /// </summary>
        public Context context;
        /// <summary>
        /// MES、SCADA实际传递的数据
        /// </summary>
        public object data;
    }

    /// <summary>
    /// IOT ext的内容
    /// </summary>
    public class Ext
    {
        /// <summary>
        /// 消息小类，必须在整个系统中唯一标识一类消息。
        /// 字段值应该含有表示设备类型的前缀，如上面示例中的abb_ack_robot_list，
        /// 其中的"abb"就是设备类型前缀，表示ABB机器人。
        /// </summary>
        public string command;
        /// <summary>
        /// 对于回应消息（消息大类为response或者bin-response），
        /// 这个字段值表示对应的请求消息（消息大类为request或者bin-request）的消息ID（msgId字段值）
        /// </summary>
        public string commandId;
        /// <summary>
        /// 事务ID，需要传输大量数据（如文件）时使用。
        /// </summary>
        public string iot_business_id;
        /// <summary>
        /// 消息大类，表示data字段携带的数据大类，可能的取值有：
        /// status 状态
        /// process 工艺过程
        /// result 工艺结果
        /// request 要发送给设备的请求
        /// response 设备对请求的回应
        /// bin-request 要发送给设备的请求（二进制）
        /// bin-response 设备对请求的回应（二进制）
        /// </summary>
        public string iot_msg_catalog;
        /// <summary>
        /// 数据偏移，用以指示本片数据在所有数据中的位置，如条目序号，或者文件数据偏移量。
        /// </summary>
        public string iot_piece_offset;
        /// <summary>
        /// 总数据量，如目录下条目（文件/子目录）数，或者文件大小。
        /// </summary>
        public string iot_total_count;
        /// <summary>
        /// 通常没有这个字段，请求方请求完成事务处理时，设置这个字段值为1
        /// </summary>
        public string iot_business_close;
        /// <summary>
        /// 业务无关的错误描述，如解析请求失败、请求的设备不在线等；
        /// 业务相关的错误描述包含在业务数据中
        /// </summary>
        public string iot_err_desc;
    }

    /// <summary>
    /// IOT context的内容
    /// </summary>
    public class Context
    {
        /// <summary>
        /// 预留
        /// </summary>
        public string abb_plugin_relay_group_id;
    }
}
